package ClientAdmin;

import java.util.GregorianCalendar;
import java.util.Scanner;

import Both.*;
import Serveur.*;

public class ConsoleTrajets {

    /**
     * 
     * @return
     */
    public static Transport creerTransport() {

        Scanner s;
        // nom du transport
        String nom;
        // Numero du transport
        int numTrans;
        // Description du moyen de transport
        String description;
        // Capacite du moyen de transport
        int capacite;

        // Demander le nom du transport
        System.out.println("Entrez le nom du nouveau transport :");
        s = new Scanner(System.in);
        nom = s.nextLine();

        // Demander le num du transport
        System.out.println("Entrez le num du nouveau transport :");
        while (true) {
            s = new Scanner(System.in);
            try {
                numTrans = Integer.parseInt(s.nextLine());
                break;
            } catch (Exception e) {
                System.out
                        .println("Vous avez fait une erreur de saisi veuillez etrer un chiffre");
            }
        }

        // Demander la description du transport
        System.out.println("Entrez la description du nouveau transport :");
        s = new Scanner(System.in);
        description = s.nextLine();

        // Demander la capacité du transport
        System.out.println("Entrez la capacite du nouveau transport :");
        while (true) {
            s = new Scanner(System.in);
            try {
                capacite = Integer.parseInt(s.nextLine());
                break;
            } catch (Exception e) {
                System.out
                        .println("Vous avez fait une erreur de saisi veuillez etrer un chiffre");
            }
        }
        return (new Transport(nom, description, numTrans, capacite));
    }

    /**
     * 
     * @return
     */
    public static Trajet creerTrajet(Serveur serv) {

        Scanner s;

        // ville de depart du trajet
        Ville villeDepart;
        // ville d'arrive du trajet
        Ville villeArrive;
        // date de depart
        GregorianCalendar Datedepart;
        // date d'arrive
        GregorianCalendar Datearrive;
        // le transport du trajet
        Transport transport;

        String temp;
        int Year, Month, Day, Hours, Minutes;
        // Demander la ville de depart
        System.out
                .println("Entrez le nom de la ville de depart parmis ces villes :");
        Ville.showAll();

        s = new Scanner(System.in);
        temp = s.nextLine();
        villeDepart = Ville.toVille(temp);

        // Demander la ville d'arrive
        System.out
                .println("Entrez le nom de la ville d'arrive parmis ces villes :");
        Ville.showAll();

        s = new Scanner(System.in);
        temp = s.nextLine();
        villeArrive = Ville.toVille(temp);

        // Demander la date de depart du trajet
        System.out.println("Entrez l'anne du depart :");
        while (true) {
            s = new Scanner(System.in);
            try {
                Year = Integer.parseInt(s.nextLine());
                break;
            } catch (Exception e) {
                System.out
                        .println("Vous avez fait une erreur de saisi veuillez etrer un chiffre");
            }
        }
        System.out.println("le moi? :");
        while (true) {
            s = new Scanner(System.in);
            try {
                Month = Integer.parseInt(s.nextLine());
                break;
            } catch (Exception e) {
                System.out
                        .println("Vous avez fait une erreur de saisi veuillez etrer un chiffre");
            }
        }
        System.out.println("le jour? :");
        while (true) {
            s = new Scanner(System.in);
            try {
                Day = Integer.parseInt(s.nextLine());
                break;
            } catch (Exception e) {
                System.out
                        .println("Vous avez fait une erreur de saisi veuillez etrer un chiffre");
            }
        }
        System.out.println("l'heure? :");
        while (true) {
            s = new Scanner(System.in);
            try {
                Hours = Integer.parseInt(s.nextLine());
                break;
            } catch (Exception e) {
                System.out
                        .println("Vous avez fait une erreur de saisi veuillez etrer un chiffre");
            }
        }
        System.out.println("et les minutes :");
        while (true) {
            s = new Scanner(System.in);
            try {
                Minutes = Integer.parseInt(s.nextLine());
                break;
            } catch (Exception e) {
                System.out
                        .println("Vous avez fait une erreur de saisi veuillez etrer un chiffre");
            }
        }
        Datedepart = new GregorianCalendar(Year, Month, Day, Hours, Minutes);

        // Demander la date de d'arrive du trajet
        System.out.println("Entrez l'anne de l'arrive :");
        while (true) {
            s = new Scanner(System.in);
            try {
                Year = Integer.parseInt(s.nextLine());
                break;
            } catch (Exception e) {
                System.out
                        .println("Vous avez fait une erreur de saisi veuillez etrer un chiffre");
            }
        }
        System.out.println("le moi? :");
        while (true) {
            s = new Scanner(System.in);
            try {
                Month = Integer.parseInt(s.nextLine());
                break;
            } catch (Exception e) {
                System.out
                        .println("Vous avez fait une erreur de saisi veuillez etrer un chiffre");
            }
        }
        System.out.println("le jour? :");
        while (true) {
            s = new Scanner(System.in);
            try {
                Day = Integer.parseInt(s.nextLine());
                break;
            } catch (Exception e) {
                System.out
                        .println("Vous avez fait une erreur de saisi veuillez etrer un chiffre");
            }
        }
        System.out.println("l'heure? :");
        while (true) {
            s = new Scanner(System.in);
            try {
                Hours = Integer.parseInt(s.nextLine());
                break;
            } catch (Exception e) {
                System.out
                        .println("Vous avez fait une erreur de saisi veuillez etrer un chiffre");
            }
        }
        System.out.println("et les minutes :");
        while (true) {
            s = new Scanner(System.in);
            try {
                Minutes = Integer.parseInt(s.nextLine());
                break;
            } catch (Exception e) {
                System.out
                        .println("Vous avez fait une erreur de saisi veuillez etrer un chiffre");
            }
        }
        Datearrive = new GregorianCalendar(Year, Month, Day, Hours, Minutes);

        // Demander le transport du trajet
        System.out
                .println("si vous voulez choisir un transport deja existant tapez : \"o\"");
        s = new Scanner(System.in);
        String choix = s.nextLine();
        if (choix.equals("o")) {
            serv.displayAllTransport();

            int choixTransp;
            System.out.println("rentrez le num du transport choisi");
            while (true) {
                s = new Scanner(System.in);
                try {
                    choixTransp = Integer.parseInt(s.nextLine());
                    break;
                } catch (Exception e) {
                    System.out
                            .println("Vous avez fait une erreur de saisi veuillez etrer un chiffre");
                }
            }
            transport = Transport.getTransport(serv.getListeTransport(),
                    choixTransp);

        } else {
            transport = creerTransport();
        }

        System.out.println("Votre Trajet a bien ete ajoute");
        return (new Trajet(villeDepart, villeArrive, Datedepart, Datearrive,
                transport));
    }
}
